#ifndef CONSTANTES_H_
#define CONSTANTES_H_

#define		MAX_SLEEP			10 // El tope para esperar a generar otra persona es MAX_SLEEP segundos
#define		PESO_PROMEDIO		75
#define		MAXPISOS			32
#define		MAXASCENSORES		3

/* ******************** */
/* ARCHIVOS SEMAFOROS   */
/* ******************** */
#define		SEM_ARCHIVO_PIS		"./Semaforos/semPisos"       // Para Monitor SHM Pisos
#define		SEM_LETRA_ASC		'M'
#define		SEM_ARCHIVO_ASC		"./Semaforos/semAscensores"  // Para Monitor SHM Ascensores
#define		SEM_ARCHIVO_ASC_IN	"./Semaforos/semAscensorIn"  // Para sincronizar entrada ascensor x piso
#define		SEM_ARCHIVO_ASC_OUT	"./Semaforos/semAscensorOut" // Para sincronizar salida por ascensor
/* ******************** */
/* ARCHIVOS SHM         */
/* ******************** */
#define		MEM_LETRA			'Q'
#define		MEM_LETRA_VEC		'G'
#define		MEM_PISOS			"./MemoriaCompartida/mcPisos"
#define		MEM_ASCENSOR		"./MemoriaCompartida/mcAscensor"
/* ******************** */
/* ARCHIVOS CONTROLADOR */
/* ******************** */
#define		CONTROLADOR_LETRA	'C'
#define		CONTROLADOR_ARCHIVO	"./Colas/msgCola"

/* ******************** */
/* SEMAFOROS POR PISO   */
/* ******************** */
#define		SEM_ASC_IN_CANTIDAD		6 // TOTAL DEL GRUPO
#define		SEM_UP_OPEN				0 /*Ascensor->v(personas_adentro) y	Persona->p(1)*/ 	/*Inicio en 0*/
#define		SEM_UP_CLOSE			1 /*Ascensor->p(personas_adentro) y	Persona->v(1)*//*Ascensor->p(personas_vivas) y Persona->v(1)*/ /*Inicio en 0*/
#define		SEM_UP_ALL_NOTIFIED		2 /*Ascensor->p(personas_vivas)   y	Persona->v(1)*/ 	/*Inicio en 0*/
#define		SEM_DOWN_OPEN			3 /*Ascensor->v(personas_adentro) y	Persona->p(1)*/ 	/*Inicio en 0*/
#define		SEM_DOWN_CLOSE			4 /*Ascensor->p(personas_adentro) y	Persona->v(1)*//*Ascensor->p(personas_vivas) y Persona->v(1)*/ /*Inicio en 0*/
#define		SEM_DOWN_ALL_NOTIFIED	5 /*Ascensor->p(personas_vivas)   y	Persona->v(1)*/ 	/*Inicio en 0*/

/* ********************** */
/* SEMAFOROS POR ASCENSOR */
/* ********************** */
#define		SEM_ASC_OUT_CANTIDAD	4 // TOTAL DEL GRUPO
#define		SEM_OPEN				0 /* Ascensor puertas abiertas */ /*Inicio en 0*/
#define		SEM_CLOSE				1 /* Ascensor puertas cerradas */ /*Inicio en 0*/
#define		SEM_ALL_NOTIFIED		2 /* Notificamos a todos */ /*Inicio en 0*/
#define		SEM_NEXT_STOP			3 /* Próximo piso calculado */ /*Inicio en 0*/

/* ********************** */
/* SEMAFOROS SHM PISOS */
/* ********************** */
#define		SEM_DOWN_FLOOR			0 /*Acceso a memoria MEM_ASCENSOR*/ /*Inicio en 1*/
#define		SEM_UP_FLOOR			1 /*Acceso a memoria MEM_ASCENSOR*/ /*Inicio en 1*/

/* ********************** */
/* ESTADOS ASCENSOR       */
/* ********************** */
#define		SUBIENDO			'S'
#define		BAJANDO				'B'
#define		ESPERANDO			'E'
#define		ESPERANDO_SUBIR		'Z'
#define		ESPERANDO_BAJAR		'V'
#define		ADENTRO				'A'
#define		ALTURA				 2

/* ********************** */
/* ARCHIVOS DE LOGGING    */
/* ********************** */
#define		LOG_FILE         	"./logger.log"
#define		SYNCHRO_FILE     	"./synchro.log"
#define		DEBUG_FILE      	"./debug.log"

/* ********************** */
/* RETURN CODES           */
/* ********************** */
#define		ERROR_SHM			-1
#define		SUCCESS				 0

/* ********************** */
/* OPERACIONES            */
/* ********************** */
#define		SUMAR   			  1
#define		RESTAR	             -1
#define		NADA	              0


#endif /* CONSTANTES_H_ */
